package com.ruoyi.ldzlsc.domain.vo;

import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 工单视图对象
 *
 * @author ldzl
 * @date 2023-09-19
 */
@Data
@ToString
public class WorkOrderVO {

    /** 工单ID */
    private Long workOrderId;

    /** 产品ID */
    private Long productId;

    /** 工单编号 */
    private String workOrderCode;

    /** 工单名称 */
    private String workOrderName;

    /** 关联计划 */
    private String planName;

    /** 工单状态 */
    private String status;

    /** 工单状态名称 */
    private String statusLabel;

    /** 计划开始日期 */
    private Date planStartTime;

    /** 计划结束日期 */
    private Date planEndTime;
    
    /** 实际开始时间 */
    private Date actualStartTime;
    
    /** 实际结束时间 */
    private Date actualEndTime;

    /** 需求日期 */
    private Date requiredDate;

    /** 优先级 */
    private String priority;

    /** 优先级名称 */
    private String priorityName;

    /** 产品名称 */
    private String productName;

    /** 产品编码 */
    private String productCode;

    /** 产品规格 */
    private String specification;

    /** 产品类型 */
    private String productType;

    /** 单位 */
    private String unit;

    /** 计划数量(工单VO展示) */
    private BigDecimal plannedQty;

    /** 计划数量(数据库原始字段) */
    private BigDecimal qtyNum;
    
    /** 实际生产数量 */
    private BigDecimal actualQty;

    /** 物料类型 */
    private String materialType;

    /** 制造方式 */
    private String manufactureType;

    /** 计划编号 */
    private String planCode;
    
    /** 来源单号 */
    private String sourceDocNo;
    
    /** 车间ID */
    private Long workshopId;
    
    /** 车间名称 */
    private String workshopName;
    
    /** 生产线ID */
    private Long productionLineId;
    
    /** 生产线名称 */
    private String productionLineName;
    
    /** 班组ID */
    private Long teamId;
    
    /** 班组名称 */
    private String teamName;
    
    /** 工序任务列表 */
    private List<WorkOrderTaskVO> workOrderTasks;
    
    /** 进度段落 */
    private List<ProgressSegment> progressSegments;
    
    /** 状态类型 */
    private String statusType;
    
    /** 任务名称，用于模糊查询 */
    private String taskName;
    
    @Data
    public static class ProgressSegment {
        private String text;
        private String color;
        private String textColor;
        private String tooltip;
    }
} 